# stories/management/commands/init_data.py

from django.core.management.base import BaseCommand
from stories.models import StoryCategory, CustomUser


class Command(BaseCommand):
    """初始化数据命令"""
    help = '初始化故事分类和示例数据'

    def handle(self, *args, **options):
        self.stdout.write(self.style.SUCCESS('开始初始化数据...'))

        # 创建故事分类
        categories = [
            {
                'name': '科幻',
                'description': '未来世界、科技、太空探险等主题的故事'
            },
            {
                'name': '历史',
                'description': '历史背景、古代故事、历史人物等主题'
            },
            {
                'name': '情感',
                'description': '爱情、友情、亲情等情感主题的故事'
            },
            {
                'name': '都市',
                'description': '现代都市生活、职场、社会等主题'
            },
            {
                'name': '奇幻',
                'description': '魔法、神话、超自然等奇幻主题'
            },
            {
                'name': '悬疑',
                'description': '推理、悬疑、犯罪等主题的故事'
            },
            {
                'name': '冒险',
                'description': '探险、旅行、挑战等冒险主题'
            },
            {
                'name': '青春',
                'description': '校园、成长、青春记忆等主题'
            }
        ]

        created_count = 0
        for category_data in categories:
            category, created = StoryCategory.objects.get_or_create(
                name=category_data['name'],
                defaults={'description': category_data['description']}
            )
            if created:
                created_count += 1
                self.stdout.write(
                    f'创建分类: {category.name}'
                )
            else:
                self.stdout.write(
                    f'分类已存在: {category.name}'
                )

        self.stdout.write(
            self.style.SUCCESS(
                f'数据初始化完成！共创建了 {created_count} 个新分类'
            )
        )

        # 提示创建超级用户
        if not CustomUser.objects.filter(is_superuser=True).exists():
            self.stdout.write(
                self.style.WARNING(
                    '提示: 还没有超级用户，请运行以下命令创建管理员账户：'
                )
            )
            self.stdout.write('python manage.py createsuperuser')
        else:
            self.stdout.write(
                self.style.SUCCESS('已存在管理员账户')
            )